<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <link rel="shortcut icon" type="image/x-icon" href="../favicon.ico"/>
    <title>常见错误分析 jetbrick-template</title>

    <link href="../assets/css/application.min.css" rel="stylesheet" type="text/css"/>

    <!--[if lt IE 9]><script src="../assets/js/html5shiv.js"></script><![endif]-->
    <script type="text/javascript" src="../assets/js/application.min.js"></script>
</head>

<body>
<a href="https://github.com/subchen/jetbrick-template/" target="_blank">
    <img src="../assets/images/forkme_right_orange.png" alt="Fork me on GitHub" class="fork-me-on-github">
</a>

<div class="jb-topbar">
    <div class="container">
        <a href="http://subchen.github.io/"><img src="../assets/images/logo-mini.png"/></a>
        <!--
        <ul class="menubar">
            <li><a href="">commons</a></li>
            <li><a href="">webmvc</a></li>
            <li><a href="">template</a></li>
            <li><a href="">orm</a></li>
            <li><a href="">widget</a></li>
            <li><a href="">javadoc-chm</a></li>
        </ul>
        -->
        <div class="pull-right" style="color:#fff;line-height:40px;font-size:16px;padding-right:20px">QQ 交流圈：310491655</div>
    </div>
</div>

<div class="jb-banner">
    <div class="container">
        <a href="http://subchen.github.io/jetbrick-template/index.html">
            <img src="../assets/images/jetbrick-template-logo.png" class="pull-left" />
        </a>
        <ul class="description">
            <li>1. 全新一代 Java 模板引擎</li>
            <li>2. 具有高性能、高扩展性</li>
            <li>3. 完美替代 JSP, Velocity 等引擎模板</li>
        </ul>
        <a href="download/jetbrick-template-1.2.3.zip" class="download-button">
            <img src="../assets/images/download.png"/>
            <span>jetbrick-template-1.2.3.zip<br/>2014-03-10</span>
        </a>
    </div>
</div>

<div class="container">
    <div class="jb-section">
        <ul class="tabs">
            <li><a href="overview.html">简介</a></li>
            <li><a href="download.html">下载</a></li>
            <li><a href="userguide.html">开发指南</a></li>
            <li><a href="config.html">配置指南</a></li>
            <li><a href="syntax.html">语法指南</a></li>
            <li><a href="integrate.html">Web 框架集成</a></li>
            <!--
            <li><a href="example.html">例子</a></li>
            -->
            <li><a href="faq.html" class="selected">FAQ</a></li>
            <li><a href="about.html">关于</a></li>
        </ul>
    </div>
</div>

<div class="container">
    <div class="announcement">
        <a href="download.html#version">2014-03-10：jetbrick-template-1.2.3 正式版已发布，欢迎下载。</a>
    </div>
</div>

<div class="container">


    <div class="markdown">

<!-- markdown body begin -->
	<ul> 
 <li><a href="faq-compile.html">jetbrick-template 将模板编译成 Java Class 有什么好处？</a></li> 
 <li><a href="faq-define.html">jetbrick-template 中为什么需要 #define 声明变量类型？</a></li> 
 <li><a href="faq-error.html">jetbrick-template 常见错误分析</a></li> 
 <li><a href="faq-autoscan.html">jetbrick-template 如何让自动扫描发现用户自定义的扩展方法/函数/标签 Class</a></li> 
 <li><a href="faq-include.html">jetbrick-template 中如何嵌入子模板？（父子间参数传递）</a></li> 
 <li><a href="faq-tag.html">jetbrick-template 中如何自定义 Tag？</a></li> 
 <li><a href="faq-layout.html">jetbrick-template 中如何实现 layout 功能？</a></li> 
 <li><a href="faq-spring.html">jetbrick-template 在 Spring 中的集成方法</a></li> 
</ul>

    <h1><a name="x773241686"></a><span>1 jetbrick-template 常见错误分析</span></h1>
<h2><a name="x1003700198"></a><span>1.1 The method getXXX() or isXXX() is undefined for the type Object</span></h2> 
<script type="syntaxhighlighter" class="brush: text"><![CDATA[
${obj.foo}
]]></script> 
<ol> 
 <li>确定 obj 存在 getFoo() or isFoo() 方法，并且是 <code>public</code> 的</li> 
 <li>obj 对象是否已经声明变量类型，否则请用 <code>#define(TYPE obj)</code> 声明变量类型。</li> 
</ol>
<h2><a name="x2016136188"></a><span>1.2 The method foo(xxx, ...) is undefined for the type Object</span></h2> 
<script type="syntaxhighlighter" class="brush: text"><![CDATA[
${obj.foo(...)}
]]></script> 
<ol> 
 <li>确定 obj 存在 foo(...) 方法，并且是 <code>public</code> 的，参数类型是否匹配。</li> 
 <li>obj 对象是否已经声明变量类型，否则请用 <code>#define(TYPE obj)</code> 声明变量类型。</li> 
 <li>如果 foo 是扩展方法，那么请确认扩展函数 XXX 是否已经注册到 <code>JetEngine</code> 中，或者参数类型是否匹配。</li> 
</ol>
<h2><a name="x1524364541"></a><span>1.3 Operator [] is not applicable for the object (Object)</span></h2> 
<script type="syntaxhighlighter" class="brush: text"><![CDATA[
${obj[foo]}
]]></script> 
<ol> 
 <li>obj 对象是否已经声明变量类型，否则请用 <code>#define(TYPE obj)</code> 声明变量类型。</li> 
 <li>只有 <code>List</code>，<code>Map</code>，<code>JetContext</code> 对象支持 &quot;[]&quot; 操作</li> 
</ol>
<h2><a name="x1017496130"></a><span>1.4 Duplicate local variable xxx</span></h2>
<p>变量 xxx 定义的两次（相同作用域只能定义一次），请查找 <code>#define</code> 和 <code>#set</code> 指令是否对 变量 xxx 进行多次定义 </p>
<h2><a name="x1038760958"></a><span>1.5 Type mismatch: cannot convert from XXX to YYY</span></h2> 
<script type="syntaxhighlighter" class="brush: text"><![CDATA[
#define(String str)
#set(int a = str)
]]></script>
<p>变量类型部不兼容，比如 <code>String</code> 对象复制给 <code>int</code>。</p>
<h2><a name="x2045797888"></a><span>1.6 Undefined function XXX</span></h2>
<p>扩展函数 XXX 没有找到，请确认扩展函数 XXX 是否已经注册到 <code>JetEngine</code> 中，或者参数类型是否匹配。</p>
<h2><a name="x122248634"></a><span>1.7 Undefined tag definition: XXX(...)</span></h2>
<p>没有找到对应的 Tag 定义，请确认 Tag 是否已经注册到 <code>JetEngine</code> 中，或者参数类型是否匹配。</p>
<h2><a name="x488029482"></a><span>1.8 line xxx: Implicit definition for context variable: XXX</span></h2>
<p>变量 XXX 没有声明变量类型，而直接使用。（这个仅仅是一个 Warning，不是 Error）</p>

<!-- markdown body end -->

    </div>
</div>

<div class="container">
    <div class="jb-footer">
        Copyright 2010-2014 Guoqiang Chen. All rights reserved.
        <br/>subchen&#64;gmail.com, QQ 交流圈：310491655
    </div>
</div>

<style type="text/css">
#cnzz_stat_icon_1000210720 {
	display: none;
}
</style>
<script type="text/javascript">
var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");
document.write(unescape("%3Cspan id='cnzz_stat_icon_1000210720'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s22.cnzz.com/z_stat.php%3Fid%3D1000210720' type='text/javascript'%3E%3C/script%3E"));
</script>



</body>
</html>
